package com.huluobo.jetpackkotlindemo2006a.databinding

import androidx.databinding.BaseObservable
import androidx.databinding.Bindable
import com.huluobo.jetpackkotlindemo2006a.BR

/**
 * Created by lc on 2023/2/15.
 * DataBinding双向绑定总结:
 * 1.使用@Bindable标记get属性,可以监听属性的变化
 * 2.set属性中使用notifyPropertyChanged来通知其他的观察者该属性是否改变
 * 3.BR是DataBinding的R文件,与正常的R文件类似,都是id的集合(映射)
 * 4.*******(重点)xml中一定要使用@={}这种形式,才能真确的给属性赋值和监听
 */
class User1 : BaseObservable() {
    @get:Bindable
    var userName: String = ""
        set(value) {
            field = value
            notifyPropertyChanged(BR.userName)
        }

    @get:Bindable
    var userId: String = ""
        set(value) {
            field = value
            notifyPropertyChanged(BR.userId)
        }
}